home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD024b.dsk / CHARGE.bas < prev    next >
BASIC Source File  |  2003-06-12  |  5KB  |  157 lines

  1. 10  REM  **********************
  2. 20  REM  *                    *
  3. 30  REM  *      CHARGE!       *
  4. 40  REM  *                    *
  5. 50  REM  **********************
  6. 90  REM 
  7. 100  GOSUB 6010: DIM SG(5,2): GOTO 7010
  8. 1000  REM   * CHARGE MOVE ROUTINE *
  9. 1010 HP =  SQR(XO *XO +YO *YO): IF HP = 0  THEN HP = 1
  10. 1020 XO = XO *S0/HP:YO = YO *S0/HP
  11. 1030  FOR I = OE TO FV:IM =  PEEK(SS):IM =  PEEK(SS): NEXT 
  12. 1040  DRAW TR AT XP,YP
  13. 1050 XN = XO:YN = YO
  14. 1060  FOR I = ZE TO SL:X = SG(I,ZE) -XP:Y = SG(I,OE) -YP:HP = X *X +Y *Y:XN = XN -CG *SG(I,TW) *X/HP:YN = YN -CG *SG(I,TW) *Y/HP: NEXT 
  15. 1070  XDRAW TR AT XP,YP:XP = XP +XN:YP = YP +YN
  16. 1080  IF XP <ZE  OR XP >TN  OR YP <ZE  OR YP >O9  THEN  GOTO 3010
  17. 1090  XDRAW TR AT XP,YP: GOTO 1060
  18. 2000  REM  * DRAW IONS *
  19. 2010  HGR : SCALE= OE: ROT= ZE
  20. 2020  HPLOT ZE,ZE TO 278,ZE TO 278,159 TO ZE,159 TO ZE,ZE
  21. 2030  FOR I = OE TO 13: HPLOT 20 *I,157 TO 20 *I,159: NEXT 
  22. 2040  FOR I = OE TO 7: HPLOT 276,20 *I TO 278,20 *I: NEXT 
  23. 2050 HC = FV:SP = TW
  24. 2060 PO =  -OE:PI = OE
  25. 2070  FOR I = OE TO SL
  26. 2080 SG(I,ZE) = 2 * INT(125 * RND(1)) +15
  27. 2090 SG(I,OE) = 2 * INT(65 * RND(1)) +14
  28. 2100 SG(I,TW) =  -PI
  29. 2110 PI = PI *PO
  30. 2120 HC = HC -PI:SP = SP +PI
  31. 2130  HCOLOR= HC
  32. 2140  DRAW SP AT SG(I,ZE),SG(I,OE)
  33. 2150  NEXT 
  34. 2160  HCOLOR= 7
  35. 2170  RETURN 
  36. 3000  REM  * IMPACT SEQUENCE *
  37. 3010  IF XP >278  THEN XP = 278: ROT= 48
  38. 3020  IF YP >159  THEN YP = 159: ROT= 0
  39. 3030  IF XP <0  THEN XP = 0: ROT= 16
  40. 3040  IF YP <0  THEN YP = 0: ROT= 32
  41. 3050  DRAW FR AT XP,YP: FOR I = OE TO 50:IM =  PEEK(SS) - PEEK(SS): NEXT 
  42. 4000  REM  * SCOREKEEPING & WHOSE TURN *
  43. 4010  FOR I = OE TO HM
  44. 4020  IF I = MC  THEN S(I) = S(I) + INT(XP *YP)
  45. 4030  NEXT 
  46. 4040  IF  INT(XP *YP) = 0  THEN  PRINT : GOTO 4070
  47. 4050  GOSUB 8010
  48. 4060  HOME 
  49. 4070 C = C +1
  50. 4080  IF C = FV *HM GOTO 5010
  51. 4090  IF M = HM  THEN  IF H = HM  THEN H = OE:M = OE:MC = OE: GOSUB 2010: GOTO 7150
  52. 4100  IF H = HM  THEN M = M +OE:MC = M:H = OE: GOSUB 2010: GOTO 7150
  53. 4110 MC = MC +1
  54. 4120 H = H +1
  55. 4130  IF MC >HM  THEN MC = 1
  56. 4140  GOTO 7150
  57. 5000  REM   * ENDING SEQUENCE *
  58. 5010  POKE 34,0
  59. 5020  HTAB 1: VTAB 24: GOSUB 9060: PRINT "ANOTHER GAME? (Y/N) ";
  60. 5030  GET Y$: IF Y$ < >"Y"  THEN  GOTO 5150
  61. 5040 H = 1:M = 1:MC = 1:C = 0
  62. 5050  FOR I = OE TO HM:S(I) = ZE: NEXT 
  63. 5060  VTAB 21: HTAB 1: PRINT  SPC( 80)
  64. 5070  HOME 
  65. 5080  VTAB 24: HTAB 1: PRINT "SAME SKILL LEVEL? (Y/N) ";: GET Y$
  66. 5090  IF Y$ < >"Y"  THEN  HOME : VTAB 24: HTAB 1: INPUT "SKILL LEVEL (1-5) ? ";SL
  67. 5100  IF SL <OE  OR SL >FV GOTO 5090
  68. 5110  HOME 
  69. 5120  VTAB 24: HTAB 1: PRINT "SAME PLAYERS? (Y/N) ";: GET Y$
  70. 5130  IF Y$ = "Y"  THEN C = 0: GOSUB 2010: GOTO 7140
  71. 5140  GOTO 7040
  72. 5150  HOME : TEXT : PRINT : PRINT  CHR$(4)"RUNMENU"
  73. 6000  REM  * HEADING *
  74. 6010  PRINT  CHR$(4);"BLOAD CHARGE SHAPES": POKE 232,0: POKE 233,96
  75. 6020 ZE = 0:OE = 1:TW = 2:C = 0:TR = 3:FR = 4:FV = 5:S0 = 10:CG = 25:SS =  -16336:TN = 278:O9 = 159
  76. 6030  TEXT 
  77. 6040  FLASH 
  78. 6050  PRINT "***************************************"
  79. 6060  FOR I = OE TO 21: PRINT "*";: HTAB 39: PRINT "*": NEXT 
  80. 6070  PRINT "***************************************"
  81. 6080  NORMAL 
  82. 6090  GOSUB 9010
  83. 6100  VTAB 3: HTAB 15: PRINT "------------";
  84. 6110  FOR I = OE TO TR: VTAB TR +I: HTAB 14: PRINT "!            !";: NEXT 
  85. 6120  VTAB 7: HTAB 15: PRINT "------------";
  86. 6130  VTAB 5: HTAB 17: PRINT "CHARGE!";
  87. 6140  VTAB 14: HTAB 12: PRINT "A GAME FOR UP TO";
  88. 6150  VTAB 16: HTAB 14: PRINT "FOUR PLAYERS";
  89. 6180  FOR I = 1 TO 3000: NEXT I
  90. 6190  RETURN 
  91. 7000  REM  * START INFORMATION *
  92. 7010  HOME : HGR 
  93. 7020  VTAB 22: INPUT "SKILL LEVEL (1-5) > ";SL
  94. 7030  IF SL <1  OR SL >5  THEN 7010
  95. 7040  GOSUB 2010
  96. 7050  HOME : VTAB 22: INPUT "HOW MANY PLAYERS? ";HM
  97. 7060 H = 1:M = 1:MC = 1
  98. 7070  IF HM <1  OR HM >4  THEN  GOTO 7050
  99. 7080  FOR I = 1 TO HM
  100. 7090  HOME : VTAB 22: INPUT "WHAT'S YOUR NAME? ";NAME$(I)
  101. 7100  PRINT : PRINT "HI,  ";NAME$(I)
  102. 7110  FOR J = 1 TO 1000: NEXT J
  103. 7120  HOME 
  104. 7130  NEXT I
  105. 7140  VTAB 21: HTAB 1: PRINT NAME$(1): IF HM >1  THEN  VTAB 21: HTAB 20: PRINT NAME$(2): IF HM >2  THEN  VTAB 22: HTAB 1: PRINT NAME$(3): IF HM >3  THEN  VTAB 22: HTAB 20: PRINT NAME$(4)
  106. 7150 XP = 7:YP = 7: POKE 34,23
  107. 7160  VTAB 24: HTAB 1: PRINT NAME$(MC);"'S TURN.  DIRECTION (X,Y) ";
  108. 7170  INPUT XO,YO: GOTO 1010
  109. 8000  REM  * TICKS UP SCORE * 
  110. 8010  IF MC = 1  THEN HT = 12:VT = 21
  111. 8020  IF MC = 2  THEN HT = 32:VT = 21
  112. 8030  IF MC = 3  THEN HT = 12:VT = 22
  113. 8040  IF MC = 4  THEN HT = 32:VT = 22
  114. 8050 AM = S(MC)
  115. 8060 D%(1) = AM/100000:AM = AM -D%(1) *100000
  116. 8070 D%(2) = AM/10000:AM = AM -D%(2) *10000
  117. 8080 D%(3) = AM/1000:AM = AM -D%(3) *1000
  118. 8090 D%(4) = AM/100:AM = AM -D%(4) *100
  119. 8100 D%(5) = AM/10:AM = AM -D%(5) *10
  120. 8110 D%(6) = AM
  121. 8120  FOR J = 6 TO OE  STEP  -1
  122. 8130  FOR I = ZE TO D%(J)
  123. 8140  HTAB HT +J: VTAB VT: PRINT I;
  124. 8150 IM =  PEEK(SS) - PEEK(SS) + PEEK(SS) - PEEK(SS) + PEEK(SS) - PEEK(SS)
  125. 8160  NEXT I
  126. 8170  NEXT J
  127. 8180  RETURN 
  128. 9000  REM  * FANFARE *
  129. 9010  FOR I = 0 TO 18
  130. 9020  READ X
  131. 9030  POKE 768 +I,X
  132. 9040  NEXT 
  133. 9050  DATA 173,48,192,136,208,4,198,1,240,8,202,208,246,166,0,76,0,3,96
  134. 9060 S = 768
  135. 9070  POKE 1,50
  136. 9080  POKE 0,91
  137. 9090  CALL S
  138. 9100  FOR I = 1 TO 3: NEXT I
  139. 9110  POKE 1,33
  140. 9120  POKE 0,82
  141. 9130  CALL S
  142. 9140  FOR I = 1 TO 3: NEXT I
  143. 9150  POKE 1,33
  144. 9160  POKE 0,75
  145. 9170  CALL S
  146. 9180  FOR I = 1 TO 3: NEXT I
  147. 9190  POKE 1,130
  148. 9200  POKE 0,66
  149. 9210  CALL S
  150. 9220  FOR I = 1 TO 30: NEXT I
  151. 9230  POKE 1,50
  152. 9240  POKE 0,75
  153. 9250  CALL S
  154. 9260  POKE 1,255
  155. 9270  POKE 0,66
  156. 9280  CALL S
  157. 9290  RETURN